﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using CorreoSocialWeb.Models;
using CorreoSocialWeb.Views;

namespace CorreoSocialWeb
{
    public partial class CalificarUserControl : System.Web.UI.UserControl
    {
        private int RutaDeEnvioId
        {
            get
            {
                return int.Parse(Request["RutaDeEnvioId"]);
            }
        }

        private bool Cancelando
        {
            get
            {
                return int.Parse(Request["Cancelando"]) == 1;
            }
        }

        private bool EsMensajero
        {
            get
            {
                return int.Parse(Request["EsMensajero"]) == 1;
            }
        }

        public string NombreUsuarioACalificar
        {
            get
            {
                return FinalizadorDeEnvio.Create(this.RutaDeEnvioId, this.EsMensajero, this.Cancelando).GetNombreDeUsuarioACalificar();
            }
        }

        public string Titulo
        {
            get
            {
                return FinalizadorDeEnvio.Create(this.RutaDeEnvioId, this.EsMensajero, this.Cancelando).GetTitulo();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
                return;

            Views.ReturnUrlHelper.Guardar(this.Page);

            this.LabelTitulo.Text = this.Page.Title = this.Titulo;

            // no me anda el binding, lo hago a mano
            this.LabelDescripcionCalificacion.Text = string.Format(this.LabelDescripcionCalificacion.Text, this.NombreUsuarioACalificar);
        }

        protected void ButtonConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.Calificacion == PuntajeDeCalificacion.SinCalificar)
                {
                    LabelError.Text = "Seleccioná una calificación.";
                    return;
                }
                Views.FinalizadorDeEnvio.Create(this.RutaDeEnvioId, this.EsMensajero, this.Cancelando)
                    .Finalizar(this.Calificacion, this.TextBoxComentarios.Text);

                Views.ReturnUrlHelper.Redireccionar(this.Page);

                LabelError.Text = string.Empty;
            }
            catch
            {
                LabelError.Text = "Error al guardar los cambios.";
            }
        }

        protected void ButtonCancelar_Click(object sender, EventArgs e)
        {
            Views.ReturnUrlHelper.Redireccionar(this.Page);
        }

        private PuntajeDeCalificacion Calificacion
        {
            get
            {
                PuntajeDeCalificacion puntaje = PuntajeDeCalificacion.SinCalificar;

                if (this.RadioButton1.Checked)
                    puntaje = PuntajeDeCalificacion.Mala;
                else if (this.RadioButton2.Checked)
                    puntaje = PuntajeDeCalificacion.Regular;
                else if (this.RadioButton3.Checked)
                    puntaje = PuntajeDeCalificacion.Buena;
                else if (this.RadioButton4.Checked)
                    puntaje = PuntajeDeCalificacion.MuyBuena;
                else if (this.RadioButton5.Checked)
                    puntaje = PuntajeDeCalificacion.Excelente;

                return puntaje;
            }
        }

    }
}